/*
 * Trim.java
 *
 * Created on 17 Март 2008 г., 21:24
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
package trim;

import trim.common.inputdata.InputData;
import trim.common.result.TrimResult;

/**
 * Базовый класс для всех методов расчета. <b>Каждый расчетный метод ложен иметь
 * конструктор поумолчанию.</b>
 *
 *
 * @author Дмитрий
 */
public abstract class Trim
{
  /**
   * Запуск алгоритма решения
   *
   * @param inputData входные данные
   * @return решение в виде {@link TrimResult}
   * @throws trim.TrimException
   */
  public abstract TrimResult solve(InputData inputData) throws TrimException;

  /**
   * Название алгоритма либо, в крайнем случае, название класса
   * @return
   */
  public abstract String getName();

  /**
   * Версия алгоритма
   * @return
   */
  public abstract String getVersion();

  /**
   * Описание алгоритма
   * @return
   */
  public abstract String getDescription();
}
